{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ##Introduction\n",
    "# In this assignment you will recursively estimate the position of a vehicle along a trajectory using available measurements and a motion model.\n",
    "\n",
    "# The vehicle is equipped with a very simple type of LIDAR sensor, which returns range and bearing measurements corresponding to individual landmarks in the environment. The global positions of the landmarks are assumed to be known beforehand. We will also assume known data association, that is, which measurment belong to which landmark.\n",
    "\n",
    "# Motion and Measurement Models\n",
    "# Motion Model\n",
    "# The vehicle motion model recieves linear and angular velocity odometry readings as inputs, and outputs the state (i.e., the 2D pose) of the vehicle:\n",
    "\n",
    "# 𝐱𝑘=𝐱𝑘−1+𝑇cos𝜃𝑘−1sin𝜃𝑘−10001([𝑣𝑘𝜔𝑘]+𝐰𝑘),𝐰𝑘=(0,𝐐)\n",
    " \n",
    "# 𝐱𝑘=[𝑥𝑦𝜃]𝑇  is the current 2D pose of the vehicle\n",
    "# 𝑣𝑘  and  𝜔𝑘  are the linear and angular velocity odometry readings, which we use as inputs to the model\n",
    "# The process noise  𝐰𝑘  has a (zero mean) normal distribution with a constant covariance  𝐐 .\n",
    "\n",
    "# Measurement Model\n",
    "# The measurement model relates the current pose of the vehicle to the LIDAR range and bearing measurements  𝐲𝑙𝑘=[𝑟𝜙]𝑇 .\n",
    "\n",
    "# 𝐲𝑙𝑘=[(𝑥𝑙−𝑥𝑘−𝑑cos𝜃𝑘)2+(𝑦𝑙−𝑦𝑘−𝑑sin𝜃𝑘)2⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯√𝑎𝑡𝑎𝑛2(𝑦𝑙−𝑦𝑘−𝑑sin𝜃𝑘,𝑥𝑙−𝑥𝑘−𝑑cos𝜃𝑘)−𝜃𝑘]+𝐧𝑙𝑘,𝐧𝑙𝑘=(0,𝐑)\n",
    " \n",
    "# 𝑥𝑙  and  𝑦𝑙  are the ground truth coordinates of the landmark  𝑙 \n",
    "# 𝑥𝑘  and  𝑦𝑘  and  𝜃𝑘  represent the current pose of the vehicle\n",
    "# 𝑑  is the known distance between robot center and laser rangefinder (LIDAR)\n",
    "# The landmark measurement noise  𝐧𝑙𝑘  has a (zero mean) normal distribution with a constant covariance  𝐑 .\n",
    "\n",
    "# Getting Started\n",
    "# Since the models above are nonlinear, we recommend using the extended Kalman filter (EKF) as the state estimator. Specifically, you will need to provide code implementing the following steps:\n",
    "\n",
    "# the prediction step, which uses odometry measurements and the motion model to produce a state and covariance estimate at a given timestep, and\n",
    "# the correction step, which uses the range and bearing measurements provided by the LIDAR to correct the pose and pose covariance estimates\n",
    "# Unpack the Data\n",
    "# First, let's unpack the available data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "with open('data/data.pickle', 'rb') as f:\n",
    "    data = pickle.load(f)\n",
    "\n",
    "t = data['t']  # timestamps [s]\n",
    "\n",
    "x_init  = data['x_init'] # initial x position [m]\n",
    "y_init  = data['y_init'] # initial y position [m]\n",
    "th_init = data['th_init'] # initial theta position [rad]\n",
    "\n",
    "# input signal\n",
    "v  = data['v']  # translational velocity input [m/s]\n",
    "om = data['om']  # rotational velocity input [rad/s]\n",
    "\n",
    "# bearing and range measurements, LIDAR constants\n",
    "b = data['b']  # bearing to each landmarks center in the frame attached to the laser [rad]\n",
    "r = data['r']  # range measurements [m]\n",
    "l = data['l']  # x,y positions of landmarks [m]\n",
    "d = data['d']  # distance between robot center and laser rangefinder [m]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1,)\n",
      "0\n"
     ]
    }
   ],
   "source": [
    "print(d.shape)\n",
    "print(d[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "v_var = 0.01  # translation velocity variance  \n",
    "om_var = 0.01  # rotational velocity variance \n",
    "# allowed to tune these values\n",
    "# r_var = 0.1  # range measurements variance\n",
    "r_var = 0.01\n",
    "# b_var = 0.1  # bearing measurement variance\n",
    "b_var = 10\n",
    "\n",
    "Q_km = np.diag([v_var, om_var]) # input noise covariance \n",
    "cov_y = np.diag([r_var, b_var])  # measurement noise covariance \n",
    "\n",
    "x_est = np.zeros([len(v), 3])  # estimated states, x, y, and theta\n",
    "P_est = np.zeros([len(v), 3, 3])  # state covariance matrices\n",
    "\n",
    "x_est[0] = np.array([x_init, y_init, th_init]) # initial state\n",
    "P_est[0] = np.diag([1, 1, 0.1]) # initial state covariance\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1., 0.],\n",
       "       [0., 1.]])"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Mk = np.identity(2)\n",
    "Mk"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Wraps angle to (-pi,pi] range\n",
    "def wraptopi(x):\n",
    "#     x = ((x / np.pi + 1) % 2 - 1) * np.pi\n",
    "    if x > np.pi:\n",
    "        x = x - (np.floor(x / (2 * np.pi)) + 1) * 2 * np.pi\n",
    "    elif x < -np.pi:\n",
    "        x = x + (np.floor(x / (-2 * np.pi)) + 1) * 2 * np.pi\n",
    "    return np.array(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "def measurement_update(lk, rk, bk, P_check, x_check):\n",
    "\n",
    "    x_k = x_check[0]\n",
    "    y_k = x_check[1]\n",
    "    theta_k = wraptopi(x_check[2])\n",
    "    \n",
    "    x_l = lk[0]\n",
    "    y_l = lk[1]\n",
    "    \n",
    "    d_x = x_l - x_k - d*np.cos(theta_k)\n",
    "    d_y = y_l - y_k - d*np.sin(theta_k)\n",
    "    \n",
    "    r = np.sqrt(d_x**2 + d_y**2)\n",
    "    phi = np.arctan2(d_y, d_x) - theta_k\n",
    "    \n",
    "    # 1. Compute measurement Jacobian\n",
    "    H_k = np.zeros((2,3))\n",
    "    H_k[0,0] = -d_x/r\n",
    "    H_k[0,1] = -d_y/r\n",
    "    H_k[0,2] = d*(d_x*np.sin(theta_k) - d_y*np.cos(theta_k))/r\n",
    "    H_k[1,0] = d_y/r**2\n",
    "    H_k[1,1] = -d_x/r**2\n",
    "    H_k[1,2] = -1-d*(d_y*np.sin(theta_k) + d_x*np.cos(theta_k))/r**2\n",
    "    \n",
    "    M_k = np.identity(2)\n",
    "    \n",
    "    y_out = np.vstack([r, wraptopi(phi)])\n",
    "    y_mes = np.vstack([rk, wraptopi(bk)])\n",
    "\n",
    "    # 2. Compute Kalman Gain\n",
    "    K_k = P_check.dot(H_k.T).dot(np.linalg.inv(H_k.dot(P_check).dot(H_k.T) + M_k.dot(cov_y).dot(M_k.T)))\n",
    "\n",
    "    # 3. Correct predicted state (remember to wrap the angles to [-pi,pi])\n",
    "    x_check = x_check + K_k.dot(y_mes - y_out)\n",
    "    x_check[2] = wraptopi(x_check[2])\n",
    "\n",
    "    # 4. Correct covariance\n",
    "    P_check = (np.identity(3) - K_k.dot(H_k)).dot(P_check)\n",
    "\n",
    "    return x_check, P_check\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "### 5. Main Filter Loop #######################################################################\n",
    "# set the initial values\n",
    "P_check = P_est[0]\n",
    "x_check = x_est[0, :].reshape(3,1)\n",
    "for k in range(1, len(t)):  # start at 1 because we've set the initial prediciton\n",
    "\n",
    "    delta_t = t[k] - t[k - 1]  # time step (difference between timestamps)\n",
    "    theta = wraptopi(x_check[2])\n",
    "\n",
    "    # 1. Update state with odometry readings (remember to wrap the angles to [-pi,pi])\n",
    "#     x_check = np.zeros(3)\n",
    "    F = np.array([[np.cos(theta), 0],\n",
    "                  [np.sin(theta), 0],\n",
    "                  [0, 1]], dtype='float')\n",
    "    inp = np.array([[v[k-1]], [om[k-1]]])\n",
    "\n",
    "    x_check = x_check + F.dot(inp).dot(delta_t)\n",
    "    x_check[2] = wraptopi(x_check[2])\n",
    "\n",
    "    # 2. Motion model jacobian with respect to last state\n",
    "    F_km = np.zeros([3, 3])\n",
    "    F_km = np.array([[1, 0, -np.sin(theta)*delta_t*v[k-1]],\n",
    "                     [0, 1, np.cos(theta)*delta_t*v[k-1]],\n",
    "                     [0, 0, 1]], dtype='float')\n",
    "    # dtype='float'\n",
    "    # 3. Motion model jacobian with respect to noise\n",
    "    L_km = np.zeros([3, 2])\n",
    "    L_km = np.array([[np.cos(theta)*delta_t, 0], \n",
    "                    [np.sin(theta)*delta_t, 0],\n",
    "                    [0,1]], dtype='float')\n",
    "\n",
    "    # 4. Propagate uncertainty\n",
    "    P_check = F_km.dot(P_check.dot(F_km.T)) + L_km.dot(Q_km.dot(L_km.T)) \n",
    "\n",
    "    # 5. Update state estimate using available landmark measurements\n",
    "    for i in range(len(r[k])):\n",
    "        x_check, P_check = measurement_update(l[i], r[k, i], b[k, i], P_check, x_check)\n",
    "\n",
    "    # Set final state predictions for timestep\n",
    "    x_est[k, 0] = x_check[0]\n",
    "    x_est[k, 1] = x_check[1]\n",
    "    x_est[k, 2] = x_check[2]\n",
    "    P_est[k, :, :] = P_check\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEWCAYAAABv+EDhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3wc1bXA8d9RsbolWcWWJfeKGzYYY9NNJxASShIIhBpIowUSUngJJSRA2oOUl4ReAgQIvYOxMdW9927Lsqzee7nvjxmtdlV3pV3Navd8Px99tDszu3tmLd8zt8y9YoxBKaVU+IlwOgCllFLO0ASglFJhShOAUkqFKU0ASikVpjQBKKVUmNIEoJRSYUoTgApqInKiiGx3Oo6uiMgpInIwwJ/xrohcGcjPUOFLE4AKCBHZJyJ1IlLt9vM3L15nRGRi23NjzKfGmCkBivFJEbk3EO9tv7/HufSFMeYcY8xT/YzjLhH5d3/eQ4WmKKcDUCHtq8aYRU4HEaxEJMoY0+x0HL0ZLHEq32kNQA04EZkoIktFpEJEikXkBXv7J/Yh6+0aw7c6NrPYNYufisgGEakRkcdEZLjdVFIlIotEJNXt+JdE5LD9WZ+IyHR7+/XAZcDt9me9aW8fKSIvi0iRiOwVkZvc3ivOrjWUicgW4JgezrHbcxGRn4nIYeAJEUkVkbfszyuzH+e4vc/HIvJdt+fXiMhW+9j3RWSM277pIvKhiJSKSIGI/FJEzgZ+CXzLjmO923m+YR+7S0Suc3ufu0TkvyLybxGpBH4uIrUikuZ2zNF2zNFe/JOrYGWM0R/98fsPsA84vZt9zwN3YF2AxAInuO0zwES356cABzu87zJgOJANFAJrgDlADLAYuNPt+GuAJHvfg8A6t31PAve6PY8AVgO/BoYA44E9wFn2/vuBT4FhwChgk3tsXZxnV+fSDDxgxxMHpAEXAfF2nC8Br7m95mPgu/bjrwO7gCOwau//A3xh70sC8oHb7O80CTjW3ncX8O8OsS0F/s8+djZQBJzmdnyT/XkRdpzvAD9we/3/An91+u9Mf/r3ozUAFUiviUi520/bVWYTMAYYaYypN8Z85uP7/tUYU2CMycMqkJcbY9YaYxqAV7GSAQDGmMeNMVX2vruAI0UkuZv3PQbIMMbcY4xpNMbsAR4BLrH3fxP4rTGm1BiTC/zFx7gBWrESVIMxps4YU2KMedkYU2uMqQJ+C5zczWu/B9xnjNlqrCaZ3wGz7VrAecBhY8yf7O+0yhizvKs3EZFRwAnAz+xj1wGPAt9xO+xLY8xrxphWY0wd8BRwuf36SOBS4Jk+nL8KIpoAVCB93RiT4vbziL39dkCAFSKyWUSu8fF9C9we13XxPBGsgkpE7heR3XZTxj77mPRu3ncMMNI9aWE1nwy3948Ect2O3+9j3ABFxpj6ticiEi8i/xKR/XaMnwApdiHbVXwPucVWivU9ZmPVSHZ7GcNIoNROOO7nku32PNfzJbwOTBOR8cAZQIUxZoWXn6eClHYCqwFnjDkMXAcgIicAi0TkE2PMLj9/1LeBrwGnYxX+yUAZVqEJVhONu1xgrzFmUjfvl49V0G62n4/uQ0wdP/M2YApWc81hEZkNrHWLsWN8vzXGPNtxh10LuNTLzzwEDBORJLckMBrI6+41xph6EXkRq99kKnr1HxK0BqAGnIh8w62jswyrsGmxnxdgtb37QxLQAJRgtbH/rsP+jp+1Aqi0O2nj7BrEDBFp6+x9EfiF3XGbA9zYy+d7cy5JWLWWchEZBtzZw7H/tD+/rSM7WUS+Ye97CxghIreISIyIJInIsW5xjBWRCAC7+eoL4D4RiRWRWcC1QKfE0sHTwFXA+YAOKw0BmgBUIL0pnvcBvGpvPwZYLiLVwBvAzcaYvfa+u4Cn7GaOb/bz85/GatrIA7ZgdR67ewyrWaNcRF4zxrQAX8XqFN0LFGO1jbf1Gdxtv99e4AN6vwr25lwexOpkLbbje6+7NzPGvIrVgfwfu7loE3COva8Kq2nmq8BhYCew0H7pS/bvEhFZYz++FBiLVRt4Fatf4sOeTsYY8zlWH8YaY8y+no5Vg4MYowvCKBWs7OGkjxpjnnY6FgARWQw8Z4x51OlYVP9pH4BSQUpE4rGakPb2duxAsJvCjsLqV1EhQJuAlApCIpKJ1ZSzFPB1mKzfichTwCLglg6jh9Qgpk1ASikVprQGoJRSYWpQ9QGkp6ebsWPHOh2GUkoNKqtXry42xmR03D6oEsDYsWNZtWqV02EopdSgIiJd3rWuTUBKKRWmNAEopVSY0gSglFJhShOAUkqFKU0ASikVpjQBKKVUmHIsAdjT0K4QkfX2oiB3OxWLUkqFIydrAA3AqcaYI7Gm3z1bROY7GI8aJN7bdJiXVx9EpzFRqn8cuxHMWP97q+2n0fZP2PyP3pRXwYSMROKGdLXyn+rOy6sPcttL6wFIiImitrGZC4/K6eVVSqmuONoHYK+4tA4oBD7sbhHrUJNXXsd5f/2M37y9xelQBpWiqgb+ungnQyKtP9vv/3s1t764nrzyOocjU2pwcjQBGGNajDGzgRxgnojM6HiMiFwvIqtEZFVRUdHABxkAGw9WAJCvBZfXVu0rZcF9H7GvpJYHLp7pse/L3SUORaXU4BYUo4CMMeXAx8DZXex72Bgz1xgzNyOj01xGg9LOAms69cnDkxyOZPA4UFpLc6vhueuO5YI5OSTHRbv2rdxb6mBkSg1eTo4CyhCRFPtxHHA6sM2peALFGMPsez7g/nfbT21HodX1kZY4xKmwBp22/t7slDgAspJjXfu0CUipvnGyBpAFLBGRDcBKrD6AtxyMJyAKqxoor23in0t3u7at3qdXrL5qGx0gCADzx6cBEBUhHKqo4/HP9moiUMpHjiUAY8wGY8wcY8wsY8wMY8w9TsUSSG3t/WDVBgor6zlUUW8/dyqqwadtyKdY5T93nT+d7feezRULxrKnqIZ73trCdx4LizEESvnNoFoPYDDafKjS9fhAaS3vbjrseq7lv/e6+q5ioiI9moL2FNUMXEBKhYCg6AQOZYfcmiU+2lrIPz7ezbyxwwCtAfikm+8qKyW26x1KqV5pAgiw4uoGJmYmMiQygnve2kJlfRN3nj/N6bAGrbYmoDbuNQCAxubWAYxGqcFNE0CAFVc3MDIljikjrCGfGYkxTMhIBMBoI5DX2r4r6ZABspLjPJ5f+fgKquqbBiwupQYzTQABVlzdSHriECYNtwr9EW5XrNoE5L2276pDBYDMpBgi3DZ+uaeEF1cdHLC4lBrMNAEEkDGGouoGMhJjGJuWAEBK/JBOzRiqd65hoB2+u6jICDKTYomKEM4/ciQAS3eExh3jSgWaJoAAyq+op7G5lfTEGMakxQPQ2NziGsuus1l6r6evKisllpT4aP5y6RxuPm0Sn+wo4u0N+QMXnFKDlCaAAPh8VzEtrYYfPbcGgJzUOIYPtZp+6ptatQbQD9KpEQgmZSaSk2ol2JtOm8TwoTF8sOVwp+OUUp70PgA/W76nhMsebb8h6aTJGZw5fQT1TS2MS0/g5+dMde3TCoD32juBO++786vTXaN/IiOEOaNSWZdbPpDhKTUoaQ3Aj+qbWiir9RyB8u15o4iMEBJioljyk1OYPz7NdQ2r5b/3uusEBmtdgNSE9nmV5oxOYX9JrU4NoVQvNAH4SV1jC8fdv5jv/3u1a1tMVIRrzhp3bUMZtQbgPddX5UXz2bmzsoiMEJ783Jof6JevbtT7A5TqgjYB+cmaA2WU1jS6nk8fOZS3bjyh07h1wK0GoBnAaz5ky5zUeM6dmcVzyw+wcl8Z63LL+eqskSyY0DkZKxXOtAbgJ8v2eC5K8vZNJ3ZZ+EPX7djKO111Anfl+pPGU9PY4uoLqG9qCWRYSg1KmgD8ZEdBFaOGxfV+oBttAvJed/cBdGdGdjInTEx3PS+sqvd/UEoNcpoA/ORQeT3j0xO9OtbVBxDIgEJMT53A3bnquLGux4WVDX6NR6lQoH0AfpJfUceM7GSevPoYEmO8/Fq1CuC19vUAvE8BC6dmcuKkdD7dWUyB1gCU6kRrAH6w4WA5xdWNjEyO5ZQpmcy1p3vuiYjWAHzRl+8qMkJ45tpjmTw8UWsASnVBawD90NjcygX/97lr0ZfMoTFev1b7gfumL9/b8KGxFFY1sDW/kpzUOJJio3t/kVJhQGsA/ZBXXuex4tfM7BSfXq8tQN5z9QH0IQNkJMWwLreccx76lIcW7fRvYEoNYloD6Ie21b6ev24+c8emEh3pfT4VEb0PwAcdF4X3RWZS+xTcW/Ir+c5jy/nuieM5eXKGn6JTanDSGoAPSqobqG5odj1vm2ogOyXOp8IfrKYMrQF4z/RlGJAtM6m9ae6L3SV8urOYKx9fQXOL3h2swpsmAC8ZYzjvr58x4873Kai0RpQcKq9DBIYne9/230Y7gQdOd30zxdWNXW5XKlxoE5CXiqsbya+wCv4PNh9mXW4Fr63LIyMxhpioSJ/fry9NGapvfQDJcV13+v769U1sPlTJAxfN4oRJ6V0eo1Qoc6wGICKjRGSJiGwVkc0icrNTsfSmoLKeY367yPX8b0t28fKag7S0Gtc8/32hTUDe60cLkGs1ttOPGO6x/YMtBeSV17Foa0E/o1NqcHKyBtAM3GaMWSMiScBqEfnQGLPFwZi6lFta63p88dE5/Hd1+5qzaYlDunpJ70Qng/NFd4vCe2PUsHg2330WsdGRLNtTwpi0eE54YIlr/5b8yh5erVTocqwGYIzJN8assR9XAVuBbKfi6Ullffsc/3efP53bzpjM0Fgrd6Yl+N7+D/aVrJb/XutPDQCsNQMiI4TjJ6aTnRJHXHQkw4fGcOm8UWzLr3R1Mh+uqKe4Wm8aU+EhKDqBRWQsMAdY3vOR/vXXj3Yy9udv09radUn80dYCfvfOVkprrATw/ZMnkBATxY2nTeI8ewHyvtYAtBPYN/78rkSEr8/J5oZTJzEzO4XK+mb2FtcAMP++jzjjz0v9+GlKBS/HO4FFJBF4GbjFGNOpLi4i1wPXA4wePdqvn/3QR9ZNQcU1DR5jxb/YXcy0rKFc+9QqAG47YzIAP1w4wXVMrN3xmxLft7tKtRO4b/w1lfZ9F84EcBX8X+wuISba+jftuKqbUqHK0RqAiERjFf7PGmNe6eoYY8zDxpi5xpi5GRn9u3HHGMPTX+5zNem0jd0vqGiv8tc1tvDtR5bzXbvwB1i1v4yoCCGpi0neoiL6XiIZ7QX2WnsTkH8T59i0eLKSY/lydwlf7m5f0+Gm59dS43bPh1KhyMlRQAI8Bmw1xvx5ID5zS34lv359My/bnbhDoqzTP1zZPlNkW/vvqv1lrm3L95aQmjCkTx2Q3RHRUUC+6GlR+P4QERZMSOPLPSUcKKlxbX9j/SEe/2yvfz9MqSDjZA3geOA7wKkiss7++UogPzC31Lpzd2NeBdBeA8gtreX6p1fx3PIDFFZ17gCsb2plWLxnW/8Fc6z+6tM6DC30lqB9AL4IZLI8bkI6pTWNLNle5LH9YJkuKq9Cm2N9AMaYzxjgSTHbpm7YZCeAttkb3t2Uz8p9ZXywpYAHLprZ5WtTEzzb+mfmJLPv/nP7HIuIaA2gDwKxnOb0kUMB68JgQkYC49IT+GJ3CQVV9by36TALp2b06WY/pYJdUIwCGigHy6zx/LsKq6msb3Jd7a/c59bcs6e0y9dmp8T7NRbtAg4eI9xu5ps8PIlHrzyG2aNS+Hh7Ed//92peXJnLsj0lLN3hWUNobTW8uvYgjc06p5AanMIqAeTZVfpWA6f+canHFXh2irWe77ubDru2PXn1Ma67R31d79cbeiOY91wrggUgdabER7v6g7KSrX/nYQntTX5LthdxycPLuPLxFR6vW7qziB+/sJ4H3tvm95iUGghhlQAOltUxLcuq7rd19v7l0jn89KwpvHHD8QDUNbW4jh8+NJZWu+DJSfVvDQDtBPZJf9YD6I2IuGYGHZdu/Tu7LxqzeFuh6/Fpf/qYe9+yblZvu/J/ZU37neFKDSZhkwCW7SlhS34lR49JJT3Runv3muPHcf6RI/nRwomkJcZwoj0h2M2nTeJ3F8xk6ogkmuyCIbWP4/27o01AvmlfDyAw2u4FnDM6FYAG+0Jg4RTPoce7i2p41B4dVFFnDSfW+wbUYOX4jWADoaG5hUseXgZATmocM7OHsmR7EWPSPK/qn75mHuA538zl88fw6c5iZmYn+zUmqxNYqwDeaq8BBDZ1Th2RBECVfQ/ARUfnMCM7GWOsSQDbbDhYTmVde8Ff39RCbLR2FKvBJSxqAPtL2idzy0mNdxXmHdv1RaRTAXPW9BHsu/9cMvsx62dXdCoI3wS6v+SNG47nL5fOIcoeGnbtCeOIihDmj0/jtjOncPXxYz2OP/9vn1PuduWvi86rvjDGeCwy1ZVX1hxkyfbCHo/pq7BIAHuKql2P0xOHcOLkDGKiIjjC7g9Qg0egrv9n5aRwvj2/E8D88Wns+t1XXM2FaYkxvPrD4/j9RbPISrYuBlbuax8xVlBl3Uz4w2dX8/7mwyjljZfX5DHjzvc9yqg263LLeW9TPre+uJ6rn1gZkBaDsGgC2l1k3eF53IQ0jhyVQmx0JFvuOZvIfkzj0F+6JKRvAtkJ7K05o1OZMzqV4yamccIDS1i+1y0BVNZT3dDMOxsP887Gw2y860wKKhuYmJnoXMAq6H1kr0Wx+VAl4zM8/1Yu+scXtLhNVLn5UCUz/NwUHRY1gINldQwfGsNz1813tdM6WfiDLgrvK1cnsJMZwJaTGs9lx1oTE7b9HR2uqOdQefudwzf/Zx2n/3kp9W6jypTqqK08qmtqIbe0lisfX+EaXNDa4QoxIgB/+2FRA/jdBTOobpjqdBgetAbgoyD7sr574nieXX6AllZDdkocn+4sZoLbFVzb0NF1ueWU1zbx+Gd7efzqY0jsYkJBFb7aEsCh8jp+8OxqNuVVsnhbAYu3FXn8yb/4vQVMG+n/Juuw+GsUEY9x3cFAO4F9E2zf1bh0a5nJkydnMCsnmb8v2cVR9hBSd88uP8COw1VsL6jikU/28GN7anGlANdaJA8u2una9uGWAt7Z6NmPNHqYn+9DsoVFAghOzjdlDDZB0PrjYdtvziYqQlh/sIK/Lt7Fi6tyOx3z5vpDrsdb3Zae/O/qg6w5UMbvLuh67ikVHirqOt9D4l7433rGZLKSYxmR7N9RiG3Cog8gWAVZq0ZQMyb4UmZsdCRRkRGuYcV55Z6zh6Z3WC2utKbR9fgnL63nueUHXDcaqvDUVQJwN2pYHN+YOypgn681AIeILgrsE4MJig7grgyJiuCbc3PYV1LLyORYXltnXfVPyEikuNoaKRQXHUlJTSN1jS1sPdxeE9hXXMOk4UmOxK0G3ic7iliXW86YtHh+89ZWj/Wnz5uVxVsb8gF44qpjKKyq5/wjA7tMuiYAh2gnsG+CsQbg7vcXHwlYdwSfOX0Ejc2tzMhO5nR7feEJmQlsyqvkiF+/5/G6TYcqqGpoZnZOChEOj0xTgXdFhwkFAeaNHUZlfRPfPXE8y/aUUFzdyEmTMwZkpKImAIfoimC+GSxfVWx0JF+ZmQXgsaTkhIxENuV1WvKaH7+wHoDHr5rLqVP7triQGtwamlt475aTAHjzxhNobG4dsGHqmgAcoovC+y5IW4C6FT+kfW6gUV3MJnvkqBTW55YDuvpYOIqNjuCW0ydz/IR017a26cgHiiYAB+mNYN6zmoAGVwZw77OIsdcbSBgSyfChsURHRvD0NfOIiYpg2q/fo6iLpUhVaGlo9rwp8JPbF5KZFJjRPd7SBOAQbQLyjSHIOwF6ccWCseSV1/HLc48gKSbKIzkMS4hxJYBFWwp4Ze1B/u+yo50KVQWAMYZD5fUe25wu/EETgGN0UXgfDe7yn+T4aO6/aFaX+zKSYlyjQb779CoAKmqbSPbzGhTKOU99sY+73tzidBid6H0ADtFF4X1jGHx9AN7KSGqvAQyxp6PeW1LjZEjKz576cr/TIXRJawBKBdCnty+ksZebvdITh/DJjiJ+9domYqIjaGxpZW9xNbNHpQxQlCpQlmwrJCslloSY4FwsSBOAg7QT2HvGmEHXCQwwyos5XM44YjivrMnjmWXtV4l7i2t7eIUaDFpbDTc9v5aslFh2FLTP93/uzCy+dUzg7u71haNNQCLyuIgUisgmJ+NwgmgngE+MCd0moHNmZvH6j44nym3s98FSTQCD3Z7iGqoamj0K/6/NHsnfLzuKkyZn9PDKgeN0H8CTwNkOx+AInQ3UN4bB3QncmyNHea5I5j6vUFNLK1c/sYJVbiuQqeCy8WAF5bWN9qJA+fzilY2c+b9LPY45d2YWD10yx6EIu+ZoE5Ax5hMRGetkDE4RdFF4X1g1gFBOATA1KwnWWo/zK6whg499tpc1B8pYsr2IvcU1fPzThQ5GqLqyZHshVz+xkkvnjSZ+SCSPfba30zFDIiP4n/OOcCC6nmkfgENCvCxTfXDKlEx+9842MpJiyK+oo7XV8Ju32ocOpiYM6eHVyinv2BO4bThY7krcHV1/0vgBv8vXG043AfVKRK4XkVUisqqoqMjpcPxKr/+9ZzAh3QQEMHl4Eut+fQY3LJxIU4vhV697do0lx+l9AcGowB7Cu/lQpceU3+6iIoPzrzfoE4Ax5mFjzFxjzNyMjODoOPEHnQ3UNybUOwFsKfFDONIe/vns8gMe+6rqm7t6iXJYYWX7Vf/RY1I5Y1r7pH6/vWAGgMe2YBL0CSBUWYvCK1+EQfkPwOxRKVw6r32Y4FPXzGPB+DRKqnW+oGBUWNXAiZPSuXBONk9dM485o60E/sTVx3DZsWPYd/+5TB+Z7HCUXXO0D0BEngdOAdJF5CBwpzHmMSdjGihWDUBTgLeMCd4FYQIhJb69vX/K8CSmZiWxMa/CwYhUV/74/nZKaxo5ZuwwbjptEgDfO2kCR2QN5ZQgGerZE6dHAV3q5Oc7KnzKMtUHKXZ7f1SEkJEUQ3piDNUNzdQ2NhM/RMduBIu/LdkFWFM7t4mMEBZOyXQqJJ9oE5CD9Prfe6E8F1BXUu0awIjkWCIjhEmZiYDV0aic99aGQ1zz5ErX89OOCM42/t5oAnCILgnsm2BfEtLf2mYCHZliDR08ekwqAF/uLnEsJtXuhZW5LN5WCMAfLp7FhIxEhyPqG00ADrE6gTUDeCuYF4UPhLYmoGw7AaQlxnBE1lAeXLSDPUXV/M9rG/n9e9ucDDGs7Slqn611tBfzPQWrHhsTReQoL96jyRiz0U/xhA0dBuqbcKsBtN30NTKlfdGQe78+g4v+8QWn/ql9ioHbz5464LGFu9rGZo+pOsakJTgYTf/01pu0FFhJz//3xgFj/RVQuAiji1nVB8OTYomJimDy8CTXtjldTA+tncIDr+3q/2/fnsOROSmMSHZ+Za++6u0vZ6Ux5tSeDhCRxX6MJ6xoDcB74dYJnBwfzac/W0h6QoxrW0RE5y9ga36Vq39ADYwC+8avnNR4r6b7DmY99gH0Vvh7e4zqTNA+AF9YyTKMMgDWmrEdC/3oDlMK7CmqRg2sttXbMpJiejky+PWrD8AYs8a/4YQPXRTeVyasagDdee+WkzhQWkvCkCi+9fCXHCyr6/1Fyi8am1tpbm11rd+cnjj4J+frrQnoT/bvWGAusB7rMmwWsBw4IXChhT4t/70Xbp3A3ZmQkegacpg1NJbcslrKaxs97hxWgXH5o8vJK6/j5CkZDI2NIiYqOJd59EVvTUALjTELgf3AUfakbEcDc4BdAxFgqAqnIY3+oLWlznJS43llTR6z7/nQY0Iy5X8vrsplxb5S8srreG75ASK76I8ZjLy9D2Cq+1BPY8wmYHZgQgofWqj5RnOmp5xh7fPL55bpEpKB9Mf3tzN8aHubf1ltk4PR+I+3CWCriDwqIqeIyMki8giwNZCBhTqrLNMM4C1rPQDNAO6+M38M583KAqCoqut56FX/NTa3UljVwKXzRrPyjtPJSY3jigVjnA7LL7wdQHw18APgZvv5J8A/AhJRmNBOYN+E8qLwfTVndCq/Oi+Otzbkuzomlf/c9uJ6TpqczlGjrWG2I5PjyEiK4dPbF4ZME65XCcAYUw/8r/2j/EAXhfdNmKwH47Nh9h3DmgD8q7mllZfXHOTlNQd58XsLAFw3fIVK4Q9eJgARmQTcB0zDGhEEgDFmfIDiCnnanOGbcFgUvi+iIyNIjY/WBOBn7mv7fvNfXwKQNYjv+O2Ot30AT2A1+TQDC4GngWcCFVS40AVhlD+kxg/h38sOUFUfGh2TwaCrTvXBPOVDd7xNAHHGmI8AMcbsN8bcBegdwP2gTUC+0bumu5edao0GenN9vsORhI6ON9jdfNokkmKjHYomcLxNAPUiEgHsFJEbROQCYHAseROkdDZQH2kncLceuWIuAPtLrEnKlu4ock1XoPpmd4cpNm48daJDkQSWtwngFiAeuAk4GrgcuDJQQYUFXRTeJ+E2GZwvYqMjGZ+RwIHSWg6W1XLl4ys45reLaG3Vv7C+aGk1vLnukOv5mLR4oiJDc+mUXjuBRSQS+KYx5qdANdaQUNVPWpb5xhi9D6AnY4bFs7+klt1uC5VU1jfpFBF9sLe4hkMV9fz+4lmMTUtwjbQKRb2mNWNMC3C06BAMv9NOYOUvY9IS2FNczRJ7mUIInbtVB1pb81lOShzzxg1jYubgXO7RG97Wa9YCr4vId0TkwrafQAYW6jSd+kabgHp2+fwxRIjw5Bf7XNvKavXuYF8ZY1xDatMSB/90z73x9k7gYUAJniN/DPCK3yMKE9oJ7BudDbRnEzMTmZiZyIaDFa5tFVoD8Elrq+GUP35MWY2VOENhuufeeHsncEDa/UXkbOAhIBJ41BhzfyA+JxjpovC+sWoAmgJ6MmJoLBuoYPrIoWw+VKk1AB9tya/kQGn7+P/UMOg/6bEJSESu7+0NvDmmm9dFAn8HzsG6w/hSEZnWl/cajLQo843VCax6kmnPVjlntLV28K0vrudXr21yMqRBZdmeEo/nXS3BGWp6qwH8XESKe9gvWBPEPdyHz54H7DLG7AEQkczzxNkAAB9JSURBVP8AXwO29OG9BiVtAlL+1NJq/R6f3t5p+cyy/fzm6zMcimhw2XyoksykGArD6B6K3hLAUuCrvRzzYR8/OxvIdXt+EDi240F2DeN6gNGjR/fxo4KPzgbqmzBcEthnbfPVj0xpXycgMkJobTVhcTXbX3uKa5g0PJHrThwfNgMOekwAgWr7t3X1FXcqEo0xD2PXMObOnRsyRaYuCu8j7QTu1Q9OmcDoYfGcNX04N546kS92l7B6fxlltY1hMaKlv/YV13DerCyuOyl85rh08va2g8Aot+c5wKFujg09WgPwicFoJ3AvYqIiufCoHESE286cwlXHjQXggy0F7Cyocja4IPba2jwm/PIdKuqaGJee4HQ4A8rbYaCBsBKYJCLjgDzgEuDbDsYzoLQo840OA/Vdun3V/4tXrNVc991/rpPhBJ2ahmbufXsrz6844No2beRQByMaeI4lAGNMs4jcALyPNQz0cWPMZqficYJWAFQgZSR5DmNsbG5lSFRozmnTF2+uP+RR+M8ZncKC8WkORjTwvE4AInIuMB3PBWHu6c+HG2PeAd7pz3sMViJgWp2OYvDQJSF9l96h3X/pjiLOmDbcoWiCT01ji+vxWzeewJQRSWHXzOjV5YCI/BP4FnAjVk38G0BorIrsEO0E9o0uCu+75DjP+evvfH2TzhDq5kBJ+8R5U0ckER2iM372xNszPs4YcwVQZoy5G1iAZweu8pEOA/WN1gB85341e/XxYzlUUc+GvApeXXuQH/x7NbsKw7NjuK6xhcsfXc5TX+4H4PcXzwrZ6Z574+1Zty2PUysiI4EmYFxgQgoPWpj5RnNl38wfPwywJouLjBAWby3gxy+s591Nhzn9z5+QW9p56cNQ99fFO/lsl3V/64VHZfPNueF7LettH8BbIpIC/AFYg/X/8dGARRUmtFBTgfavy+eyYl8pEzISmZmdzF8W7/LYv6+khlHD4h2Kzhnvbz7MyZMz+PtlRxEdGd5XYt7WAH5vjCk3xryM1fY/Fbg3cGGFPkF0PQAfWE1A4f2ftS+S46NdHb+zR6W4trd9lYfK67p6WUgpr22kvsnq8C2sqmd3UQ0LJqSRGBNFTFSkw9E5y9sawJfAUQDGmAagQUTWtG1TvtNF4X2lk8H117UnjGN3UTWf7izmP9fN55JHlpFXXu90WAE3+54PmZY1lJZWw3b7hrj5YTbcszs9JgARGYE1Z0+ciMyh/V6coVhrBKt+0AqA97QTuP9GDYvnmWuPtWZWFSEzKSbkawAt9qinLfmVHttnhNkNX93prQZwFnAV1jQNf3bbXgn8MkAxhQVtzvCNrgjmP21/e9kpcex3GwoJUFHXxIOLdvDTs6YQP8TJiQL8w31NhPTEGNdqX+E66qej3iaDewp4SkQustv/lR9pBcB7uii8/80fn8a/PtlDaU0jQ2Oj+HJPCR9sLuCZZfuZlJnEt48d/LPvllS3J4Czpg9n4ZRMslPjenhFePE2xX8uIo8BI40x59gLtywwxjwWwNhCmoC2ASlHfWVmFv/38W6W7ihkxd4yj2kRgv0mxfLaRmKjI4mNtjpxW1oNLa2m01QXJTXtc/vPGZ3K6XontAdv60FPYM3ZM9J+vgO4JSARhQntBPaNNgH5n3X3q7D9cDVbO7SRF1ZaBacxhkc/3RNUN421tBq++rfPuPft9rWjvvfMaib/z7u0tBoe+2wve4utpq22GsB1J47jwjnZjsQbzLxNAOnGmBeBVrAmcgNaen6J6okuCu8bnQ3U/6IiIxifnsiuwipX23ibgsp6cktrOeehT7n37a3c8Nxah6K0uA+ZXranhNzSOlbtK3NtW7S1AIDV+8v4zVtbWPjHj2lsbnV1/n7v5Am6KE4XvE0ANSKSRtvCTCLzgYqARRUGtBPYN/YfntNhhJyJwxPZUVDdKQHkV9Tzk5fWs+2wdeVfUtPIU1/so7qhecBjLKysZ85vPuTL3daava+uzQNgV2E1Dc2e16Er95W6Hv9n5QH+8fFuIDwWeO8LbxPArcAbwAQR+Rx4GmtiONUPwd7OGkx0UfjAmJSZyIHSWuqb2qemXTA+jaU7ili+t5SZ2ckAFFU1cOcbm3ng3W0AfL6rmMbm3qezfXDRDi7+xxeu0UZ9uflx6Y4iymub2HyogvqmFt7bdJiMpBiaWw07C6o93nPFXisBREYIDy3aCVjzIEXq1X+XvOoENsasEZGTgSlYNfHtxpimgEYW4rQJSAWDSZlJrse/vWAGx09Ip6KuiSufWEFDUyuPXTWXXYXVfPuR5QC8t/kwFXVNvLH+EGdOG85Dl8whbkj3d9M+t/wAhVUNvL0xn7UHyqmub+b56+f7FOPn9rw9xdWN7Cioorqhmcvnj+GfS3dzuKKerGTXDPUs3VEEwMmTM1i8rRCAW8+Y7NPnhRNfBvrOA8barzlKRDDGPB2QqMKAzgbqO20B8r9JwxNdj3NS4xlrL4m48o7TqW1oITk+mozEGBJjoqhuaKaoqoE31lsrt36wpYAzH1zK0p8s5JFP9zAxM5FV+8u4cE42EzOt962z59z/aGshq/dbbfa7CquY6JZ49hbXECEwJq3zcozGGD63m35KqhtcTVInTkrnn0t38+hneyisauj0uqNGp7B4WyHxQyJJio3utF9ZvEoAIvIMMAFYR3vnr8FqClJ9ItoA5APtBA6MsW6F7mi3SeGiIyNIjrdaiEWE5b88jVX7y7jy8RUer88trePz3cXcZzcNgbXG7kmTMli1v5Qqu8+grfAH+HJPqSsBrM8t52t//5zslDg++9lCRIQnPt/LSZMzmJCRyK0vrqfILuCLqxvYfriK2OgIjhqdCsCyPVaTz02nTeLb80Zz+p+XcuSoZC44Koe3Nx7m2HHD/PZdhSJvawBzgWlGZy/zG6sGoF+nt3RR+MAYEhXBr86bRmZSTI8LoifERHUqTG8/ewq/f287T32xz2N7fkU9L6zKdT2flJnIzsLq9v1u00+01SbyyuvYXlDF0Nho7n5zC+PSE3jth8e7OnynjkiiuLqRppYqJmUmeTQ7PXHVMSycmgnA6l+dTqQIUZERvHvziT5+G+HH2wSwCRgB5AcwlrCiRZlvtAYQONee4N3SHrHRkXx028mU1zaREBPJ1BFD+dfSPSzaWtjj644anepKANb0E7V8sqOIkSmxvLLmIDmpcRwsq+PsBz91vaa6odk1oufpa+bxxvpDfL6rmPyKek6ZkuHx/mPdEle4z+7pqx5HAYnImyLyBpAObBGR90XkjbafgQlRKRUsJmQkcvSYVKaOsCZTO9W+8u7Y0XrlgvYVY48a0z4NdXZKHG9vzOeKx1dw20sbqGlo4YmrjiGmwx28RVUNfPfpVQDMyE5mZHIs+RX1FFc3MHVEksex2Sk6tUNf9VYD+OOARBGGtBPYNzobaHD6/cWzuO/CmTS2tPLnD3e4tp85fQSRERE8/vlej6mXq9zuI1ifW87JkzOYNDyJ2OhIGroYVvqVmSMYljCEyxeMcS1mM8VOAG0d0x2nf1De620yuKUAIvKAMeZn7vtE5AFgaQBjC2m6KLxvdFH44BQdGUF0JB5X8AunZDBv3DCOm5DGzadNIjk+mkmZiVyxYAwHy+o8pp041l6yMsoep59pj+8vrWnk1+dN4xq7eSozKZZFt57MOxvzOXaclVCW/OQUahsH/sa0UOJt6jyji23n+DOQcKM1AN8Yg3YCBDH3DvpHrphLdGQEIkJyvDUE88NbT+Y7C8byk7OmsO7XZ5Bqb2/rWL5s/hjXcW1DSMdneHZKT8xM5KbTJrmu+DOSYrocOqq811sfwA9EZCMwRUQ2uP3sBTb09UNF5BsisllEWkVkbl/fZzDT5gzfaPk/ePQ01350ZAQp8UMYNSye2OgIZmZb/QO3nDaJ9XeeSXJcND87ewpTRyQxd6wO4Qy03voAngPeBe4Dfu62vcoYU9r1S7yyCbgQ+Fc/3mPQ0wqACldnTR/B0WNSXVfzERFCcpxVKzh6zDDeu+UkJ8MLG731AVRgTfp2qT8/1BizFcJ7QjRdFN5HBkT7+oLaU9fM43CFd0tM/mjhxABHo7wR9Gu+icj1wPUAo0cP/hWKXHQ9AJ9YncCaAYLZyZMzej9IBZWAJQARWYR181hHdxhjXvf2fYwxDwMPA8ydOzdkykxrRTCnoxg8dBioUv4XsARgjDk9UO8dCsK5+asvdEUwpfxP69QO0gqAUspJjiQAEblARA4CC4C3ReR9J+JwkrUegKYAb1kLwmgVQCl/cqQT2BjzKvCqE58dLHRReN9oE5BS/qdNQA7RFcF8o9+VUv6nCcAh2gnsG6sGoN+ZUv6kCcBBOhmcb7T4V8q/NAE4RJuAfKRfllJ+pwnAKTobqE+0E1gp/9ME4BAd0ugbXRJSKf/TBOAQvZr1jS4Kr5T/aQJwkN4I5hst/pXyL00ADhH0RjBfaK5Uyv80AThEl4T0jc4GqpT/aQJwiC4K7xvrm9IMoJQ/aQJwiF7N+sYYo9+ZUn6mCcBB2gTkGy3/lfIvTQAO0dlAlVJO0wTgGNEagA+0E1gp/9ME4BDRRYF9Yi0KrxlAKX/SBOAQLcp8ozUApfxPE4CDtAnIezoZnFL+pwnAIdoJrJRymiYAhwiicwH5QBeFV8r/NAE4RGsAvjGgHSdK+ZkmAIdoWeYjXQ9AKb/TBOAgbQHyni4Kr5T/OZIAROQPIrJNRDaIyKsikuJEHE4S0T4ApZSznKoBfAjMMMbMAnYAv3AoDkdp8e89qxNYKeVPjiQAY8wHxphm++kyIMeJOJwkuiKMT/Q+AKX8Lxj6AK4B3u1up4hcLyKrRGRVUVHRAIYVWDqk0Te6KLxS/hcVqDcWkUXAiC523WGMed0+5g6gGXi2u/cxxjwMPAwwd+7ckLpmDqmTCTBdFF4p/wtYAjDGnN7TfhG5EjgPOM2EYW+otSRk2J12v2jxr5R/BSwB9EREzgZ+BpxsjKl1IganaReAbzRXKuV/TvUB/A1IAj4UkXUi8k+H4nCMLgrvG2PQKoBSfuZIDcAYM9GJzw0mwdie3djcykdbCzh7xoigjE87zpXyr2AYBRS2TJA1Aj24aAc/eHYNn+8q8fo1f3x/O+N/8XbA+zN0UXil/E8TgEME/zcBrc8tZ849H7ByX6lPr6tvagFg06FKAKobmns63MPfluyi1UBJTaNPn9kXWv4r5V+aAJwSgNlAf/7KRspqm1i2u/cr+Ec+2cMzX+7jxZW5TP3Ve+RX1FFZ1wTg+t3RjoIqfvzCOvYUVXe64t9fUtPv+HsSXHUlpUKDJgCHiJ8zQF1jC7sKqwD404c7+HBLQadjjDF8urOI1lbDb9/Zyq9e38ztL28AYG9xDVX1VsG/Ma+CZ5btp6ahmfW55fz0pfW0tBp+/MI6Xl2bx6l/WsoLK3MprKx3vfdLqw5ijOFwRT3XPLmSUj/XCHRJSKX8z5FOYOX/wmztgTKaWtozynVPr2Lf/ee6nm/Nr+Tcv3xKq4GHLpnd6fUFlfUcKrcK9GeW7Qdgb1ENr6/Lo6SmkeMnprPZbiIC+Hx3CZlDY1zP/7Myl+MnplNR18TibYV8urOIr83O9tv56aLwSvmf1gAc1J9OYGMMt/93PSv2Wu39W/Irezz+0U/30mp/3J1vbAbgygVjXPuX7S6lzu4LaLOzsMrVtn/LC+s89jW3tLIprxIRuHz+aAD+tngXm/IqAFi6o4h3N+Z3imP+7z7i0U/3eHuaLloDUMr/NAE4pL+dwNUNzby46iCXPPwlYDXhpMRHMyN7KACREZ7TTVfUtTfJlNdaTT3HTUznrRtPAOCjbVaTUWJMe6Vw3YHyHj9/U14F49ITuPfrM7nvwplsL6jiPytzAXhlTR4/eHYNhyvam4nqm1o4XFnPvW9v7dM5awJQyr80ATikv0tCVtgdtW1X9ftKahiblsDjVx3DOTNG0NJquP+9bRyuqKe0ppFFWws5d2aWx3uMTI5jRnYyk4cnUlzdSExUBCdNTnftr7JHA8UPiez0+QdKa9lbXMPEjEQAzpvV/t4RbgX17qJq1+O2xNMX2gmslP9pAnBIfxeFr+gwUmdvUQ3j0hPITIrligVjAfjX0j3c8epGfm539E7ITOSRK+aSYBfoo4bFAXDmtBHkpMbxwEWzmDJ8aKfPevF7CxifkeCx7VB5HQdKaxk1LB6ApNho175TpmS6Hu8qbE8AZbV97xg2uiiwUn6nncAO6W9zRmVd+1j9kuoGDlXUM3l4EgBzx6a69n20rdD1+PL5o8lMimXT3WdR19RC/BDrn/8nZ03hJ2dNAeDN9Yc8PicyQpiRnczi206huqGZvLI6XlqVy6Of7QUMOalxrmPjh0RS29jCt44ZxWL7c3faI5MAyvo1MkhvBFPK37QG4CB/NAEBrNxXBsAxdsEfHRnBT8+awtXHj2VMmnWFfs/XppOZFAtY01C0Ff4djUi2jkmKtfbf9dVprn2JMVFMGZHEvHHDXNtyUuNdj5+59liuXDCG06Zm8o2jc0gYEsm/lx1wjSoq7WcNQMt/pfxLawAO6W8nsPvNWiv2ljIkKoKZOcmubT9aaE23dOKkdL7/zBoWjE/z6n2PGp3K904az+XzxxAbHUlGUkynY0amtF/1u9cAjh6TytFjrCT0h28cSVpiDP9cuptfvbaJ6AjxuMO4uLqBQ+V1zMrxfjlorQEo5V+aAJziQ2l2uKKezKQYItx6V91rAK+vy2P2qBRiojp31p46dTib7j6LIVHeVfYiI4RffOWIHo/JsmsJAJMyE7s97oisJNfjn7+y0WPftx9Zxo6CajbedaZH/0F3tBNYKf/TJiCHtBXlvXUEF1bWM/++j3hw0Q7W5ZZTXN0AQGV9ewIoqWlk3thh3b2F14W/t4YlDAHgKzNHEBXZ/XufOzOLC+d0fTPYjgKrc/ib/1pGfkVdp/2LtxXw9yW7XM+tReG1CqCUP2kCcIi3FYCCSqvA/8viXXz9759z+aPLAasGkBIfzU2nTSI1Ppozpw8PVKidiAgb7zqTv156VI/HRUVG8KvzrD6EUcPieP66+fzU7mxuszW/km/9a5lrQro21zy5ij+8v53G5lZAF4VXKhC0CchhPd3hetPza4nucIW9s7CappZW8ivqSU+M4dYzJnPrGZMHIFJP3jTbAKQmDOGP3ziS+eOHkZMaz7j0BP7w/nYATj9iOOfPHslNz6/l9XV5fOuY0Z1ev7Owiukjk7UTWKkA0BqAQ9qaM7prACqvbeSN9Yd4ec1B17bjJqTR0mrILa1la34lU0ckdfPq4HLx0Tmu0ULunconTkrnq7OySI6LZl2u513HaXYz0+Y8a4oLaz0ATQFK+ZMmAIe0lWXd9QFsOdR5bp8b7JE9aw+Uc7CsjmkjO9+0Fewi3Tqyjx6TiohwRFYSz6/IZemOIte+tn6GA6VhuWS0UgNCE4BDXJ3A3ex3n3kzMSaKXb89h5k5yUQI/N/HVufo9JHJ3bw6uCXHWc1H0+0EdkSW9fvPH+5wJcQae8ho2xTVOgpIKf/TBOCQrlozNuVV8OIqazK1NQfKXNtT4qOJiowgKTaamdnJ7LanfTh+gndj+4PNoltPZuUdp7uadG47cwoxURGszy3nyLs/YFdhNVX1VgKotH+js4Eq5XeaABzm3gL0w2fXcPt/N7DtcKXHso7u7ebfWTCW2OgIHrhoVo9DMINZRlKMxzklxkRxgT1ctLK+mX98vJvqxs41AB0GqpR/6Sggh7Rd/bqvCdBqZ4OHFu2kuLqRHy2cwM6Cau752gzXMRcfncPXZ48ctIV/dzKHtt9c9srag67E2DbnkS4Kr5T/hVYpMghty6/CGENrq6Gk2porZ8l2ayK1044YzsNXzHXNz9Mm1Ap/sBaYAThyVIpHrcj9hjct/5XyL0dKEhH5jYhsEJF1IvKBiIx0Ig4ntV3Nfu3vn/OflbnsK6lxrchV32QVhhPSu59mIdScdoR1I9s95093bYuNjnD1BWgnsFL+59Sl5B+MMbOMMbOBt4BfOxSHY9zbs19bm8e9b28lfkika6bNtIQhJMd7d7NVKDh6TCr77j+XI0eluIa7jk1LoLy2kdZWo0tCKhUAjiQAY4z7IPcEwvACz70w21dSw9b8Ss6ZkeWa0rltGudwdNuZk3nzhhM4c9pwahpb+O7Tq6xF4TUDKOVXjjUmi8hvRSQXuIweagAicr2IrBKRVUVFRd0dNqgVVTVwuLKeEckxjLebfa47cbzDUTlHRJiZk+xakH7xtkLqm1q1D0ApPwtYAhCRRSKyqYufrwEYY+4wxowCngVu6O59jDEPG2PmGmPmZmRkBCrcAedemLUaazjo8KGxfH1ONotvO5lzOqzfG44unTeaU6ZkuBan0QyglH8FLAEYY043xszo4uf1Doc+B1wUqDiCVdskb9GR7aVaZlIskRHC+Izw6fztyYzsZJ68eh43nmr1CbTNC6SU8g+nRgFNcnt6PrDNiTic9LXZI3ngopk8ftUxrm0dh3sqyyXzrFlC54z2fvUwpVTvnLoR7H4RmQK0AvuB7zsUh2PSEmP41jGjKXdbJ3dkiiaArgyNjWbz3WcRF915xTOlVN85kgCMMWHX5NOd5LhofnrWFEYPi3ct2q46S4jRm9aV8jf9X+UwEXEt4K6UUgMp9OYUUEop5RVNAEopFaY0ASilVJjSBKCUUmFKE4BSSoUpTQBKKRWmNAEopVSY0gSglFJhSowZPFPxi0gR1tQRfZEOFPsxnMFAzzk86DmHh/6c8xhjTKfplAdVAugPEVlljJnrdBwDSc85POg5h4dAnLM2ASmlVJjSBKCUUmEqnBLAw04H4AA95/Cg5xwe/H7OYdMHoJRSylM41QCUUkq50QSglFJhKiwSgIicLSLbRWSXiPzc6Xj8RUQeF5FCEdnktm2YiHwoIjvt36n2dhGRv9jfwQYROcq5yPtGREaJyBIR2Soim0XkZnt7KJ9zrIisEJH19jnfbW8fJyLL7XN+QUSG2Ntj7Oe77P1jnYy/P0QkUkTWishb9vOQPmcR2SciG0VknYissrcF9G875BOAiEQCfwfOAaYBl4rINGej8psngbM7bPs58JExZhLwkf0crPOfZP9cD/xjgGL0p2bgNmPMEcB84Ef2v2Uon3MDcKox5khgNnC2iMwHHgD+1z7nMuBa+/hrgTJjzETgf+3jBqubga1uz8PhnBcaY2a7jfcP7N+2MSakf4AFwPtuz38B/MLpuPx4fmOBTW7PtwNZ9uMsYLv9+F/ApV0dN1h/gNeBM8LlnIF4YA1wLNYdoVH2dtffOPA+sMB+HGUfJ07H3odzzbELvFOBtwAJg3PeB6R32BbQv+2QrwEA2UCu2/OD9rZQNdwYkw9g/860t4fU92BX8+cAywnxc7abQtYBhcCHwG6g3BjTbB/ifl6uc7b3VwBpAxuxXzwI3A602s/TCP1zNsAHIrJaRK63twX0bzscFoWXLraF49jXkPkeRCQReBm4xRhTKdLVqVmHdrFt0J2zMaYFmC0iKcCrwBFdHWb/HvTnLCLnAYXGmNUickrb5i4ODZlzth1vjDkkIpnAhyKyrYdj/XLO4VADOAiMcnueAxxyKJaBUCAiWQD270J7e0h8DyISjVX4P2uMecXeHNLn3MYYUw58jNX/kSIibRdw7uflOmd7fzJQOrCR9tvxwPkisg/4D1Yz0IOE9jljjDlk/y7ESvTzCPDfdjgkgJXAJHsEwRDgEuANh2MKpDeAK+3HV2K1k7dtv8IePTAfqGirWg4WYl3qPwZsNcb82W1XKJ9zhn3lj4jEAadjdYwuAS62D+t4zm3fxcXAYmM3Eg8WxphfGGNyjDFjsf6/LjbGXEYIn7OIJIhIUttj4ExgE4H+23a642OAOle+AuzAaju9w+l4/HhezwP5QBPWFcG1WG2fHwE77d/D7GMFazTUbmAjMNfp+PtwvidgVXM3AOvsn6+E+DnPAtba57wJ+LW9fTywAtgFvATE2Ntj7ee77P3jnT6Hfp7/KcBboX7O9rmtt382t5VTgf7b1qkglFIqTIVDE5BSSqkuaAJQSqkwpQlAKaXClCYApZQKU5oAlFIqTGkCUEqpMKUJQIUlEUmzp91dJyKHRSTP7fkXAfi8q0SkSEQe7eGYOPvzG0Uk3d8xKNVROMwFpFQnxpgSrOmVEZG7gGpjzB8D/LEvGGNu6CGmOqw5f/YFOA6lAK0BKNWJiFTbv08RkaUi8qKI7BCR+0XkMnuBlo0iMsE+LkNEXhaRlfbP8V58xnT7fdbZC3pMCvR5KdWR1gCU6tmRWLNvlgJ7gEeNMfPEWo3sRuAW4CGshUo+E5HRWPPTdzVjp7vvAw8ZY56156iKDNgZKNUNTQBK9WylsSfZEpHdwAf29o3AQvvx6cA0t2mph4pIkjGmqof3/RK4Q0RygFeMMTv9H7pSPdMmIKV61uD2uNXteSvtF1ARWCtSzbZ/snsp/DHGPAecD9QB74vIqX6OW6leaQJQqv8+AFyduyIyu7cXiMh4YI8x5i9YU/vOClx4SnVNE4BS/XcTMNfuzN2C1b7fm28Bm+ylHqcCTwcyQKW6otNBKzUAROQqrDnbux0G6nbsPvvY4kDHpcKb1gCUGhh1wDne3AgGRNO+GLpSAaM1AKWUClNaA1BKqTClCUAppcKUJgCllApTmgCUUipM/T/EIyr3PCuNVQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plotting the estimates\n",
    "\n",
    "e_fig = plt.figure()\n",
    "ax = e_fig.add_subplot(111)\n",
    "ax.plot(x_est[:, 0], x_est[:, 1])\n",
    "ax.set_xlabel('x [m]')\n",
    "ax.set_ylabel('y [m]')\n",
    "ax.set_title('Estimated trajectory')\n",
    "plt.show()\n",
    "\n",
    "e_fig = plt.figure()\n",
    "ax = e_fig.add_subplot(111)\n",
    "ax.plot(t[:], x_est[:, 2])\n",
    "ax.set_xlabel('Time [s]')\n",
    "ax.set_ylabel('theta [rad]')\n",
    "ax.set_title('Estimated trajectory')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
